package org.ia.efactura;

import java.util.Vector;

/**
 * Clase Comprobante.
 * @author oscar
 *
 */
public class Comprobante extends AttrHandler{

	Emisor emisor = null;
	Receptor receptor = null;
	Vector<Concepto> conceptos = null;
	Vector<Retencion> retenciones = null;
	Vector<Traslado> traslados = null;
	
	/**
	 * Constructor.
	 */
	public Comprobante(){
		conceptos = new Vector<Concepto>();
		retenciones = new Vector<Retencion>();
		traslados = new Vector<Traslado>();
	}

	/**
	 * Regresa el objeto Emisor asociado con el Comprobante.
	 * @return Objeto Emisor.
	 */
	public Emisor getEmisor() {
		return emisor;
	}

	/**
	 * Asigna el objeto Emisor asociado con el Comprobante.
	 * @param emisor Objeto Emisor.
	 */
	public void setEmisor(Emisor emisor) {
		this.emisor = emisor;
	}
	
	/**
	 * Regresa el objeto Receptor asociado con el Comprobante.
	 * @return Objeto Receptor.
	 */
	public Receptor getReceptor() {
		return receptor;
	}

	/**
	 * Asigna el objeto Receptor asociado con el Comprobante.
	 * @param receptor Objeto Receptor.
	 */
	public void setReceptor(Receptor receptor) {
		this.receptor = receptor;
	}
	
	/**
	 * Agrega un objeto Concepto asociado con el Comprobante.
	 * @param concepto Objeto Concepto.
	 */
	public void addConcepto(Concepto concepto){
		this.conceptos.add(concepto);
	}
	
	/**
	 * Regresa un vector con los Conceptos asociados al Comprobante.
	 * @return Vector con objetos Concepto.
	 */
	public Vector<Concepto> getConceptos(){
		return this.conceptos;
	}
	
	/**
	 * Agrega un objeto Retencion asociado con el Comprobante.
	 * @param retencion Objeto Retencion.
	 */
	public void addRetencion(Retencion retencion){
		this.retenciones.add(retencion);
	}
	
	/**
	 * Regresa un vector con las Retenciones asociadas con el Comprobante.
	 * @return Vector con objetos Retencion.
	 */
	public Vector<Retencion> getRetenciones(){
		return this.retenciones;
	}
	
	/**
	 * Agrega un objeto Traslado asociado con el Comprobante.
	 * @param traslado Objeto Traslado.
	 */
	public void addTraslados(Traslado traslado){
		this.traslados.add(traslado);
	}
	
	/**
	 * Regresa un vector con los Traslados asociados con el Comprobante.
	 * @return Vector con objetos Traslado.
	 */
	public Vector<Traslado> getTraslados(){
		return this.traslados;
	}
	
	
}
